<?php

/**
 * @see Tavs_Frete
 */
require_once 'Tavs/Frete.php';

/**
 * @see Zend_Config_Xml
 */
require_once 'Tavs/Frete/Resultado.php';

/**
 * Interpreta XML da consulta e converte em array.
 *
 * @category Tavs
 * @package Tavs_Frete_Resposta_Xml
 *
 * @author Tales Santos <tales.augusto.santos>
 */
class Tavs_Frete_Retorno_Xml extends Tavs_Frete
{
	/**
	 * Tipo de retorno da consulta
	 *
	 * @var string
	 */
	protected $_retorno = 'xml';

	/**
	 * Le o resultado e converte o xml em array
	 *
	 * @param Zend_Http_Response $response Objeto com a resposta da consulta
	 *
	 * @return Tavs_Frete_Resultado
	 */
	protected function _readResponse(Zend_Http_Response $response)
	{
		$strXml = $response->getBody();

		//le o xml
		$xml = new SimpleXMLElement($strXml);
		$data = array();

		//loop nos servicos
		foreach ($xml as $nodeValue)
		{
			$servicoId = (int)$nodeValue->Codigo;
			$serviceParams = (array)$nodeValue;
			$serviceParams['MsgErro'] = (string) $nodeValue->MsgErro;
			$data[$servicoId] = (array)$serviceParams;
		}

		return new Tavs_Frete_Resultado($data);
	}
}